package com.jason.java

/**
 *
 * @Author: Jason
 * @Date: 2017/7/4
 * @Time: 21:34
 */

// 带val hello 是属性  enum class Lang(val hello:String) {  不带 test 只是个参数  在sayHello的方法中是无法访问test参数
enum class Lang(val hello: String) {
    ENGLISH("hello"),
    CHINESE("你好"),
    JAPANESE("日语你好"),
    KOREAN("韩语你好");

    init { // 构造方法的方法体

    }

    /**
     * 静态方法 通过companion来定义
     */
    companion object {
        fun parse(name: String): Lang {
            return Lang.valueOf(name.toUpperCase())
        }
    }

    fun sayHello() {
        println(hello)
    }
}

fun main(args: Array<String>) {

    if (args.size == 0) return
    val lang = Lang.parse(args[0])
    println(lang)
    lang.sayHello()
    lang.sayBye()


}

/**
 * 拓展方法
 */
fun Lang.sayBye() {
    val bye = when (this) { // when如同java中的switch 但是 when是有返回值
        Lang.ENGLISH -> "Bye"
        Lang.CHINESE -> "再见"
        Lang.JAPANESE -> "日语再见"
        Lang.KOREAN -> "韩语再见"
    }
    println(bye)
}
